<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Atributo_lst( $this );

	class Atributo_lst extends Lst
	{
	function Atributo_lst( &$oModule )
		{
			$this->Lst ( &$oModule );
		}

	function make()
		{
			// Crea el Objeto del Paginado
				$oPaginado = new Paging();
			// Obtiene los Parametros la Pagina
				$ncClase 	= getParam('ncClase','PG');
			// Arma el Query
				$cSql = "SELECT CAt.ncAtributo, cdAtributo, CAt.cFisico, cdClaseAtributo, fLongitud, Cla.cFisico as cFisicoC, CAt.ncClase, cIcono, CAt.nOrden
									FROM stClaseAtributo as CAt
									JOIN stClase as Cla
											ON  Cla.ncClase = CAt.ncClase
									JOIN scTipoAtributo as TAt
											ON TAt.ncTipoAtributo = CAt.ncTipoAtributo";
			// Arma el Filtro de la Consulta
			$cSql .= armarFiltro(	"CAt.ncClase", $ncClase);
			// Calcula la Cantidad de Total de Filas de la Consulta
				$oPaginado->setTotalItems ( $this->oModule->oDatabase->total($cSql) );
			// Arma el Orden de la Consulta
				if( $oPaginado->getOrderBy() )
				{
					$cSql .= " ORDER BY " . $oPaginado->getOrderBy();
				}
			// Ejecuta la Consulta
				if ( $this->oModule->oDatabase->query($cSql , $oPaginado->getFrom(), $oPaginado->getLength() ) )
				{
		?>
			<table class="listado" summary="Esta tabla contiene los atributos de una Clase">
				<caption>Listado de Atributos</caption>
				<!-- Encabezado de la Tabla -->
				<thead>
					<tr>
						<? if ( !$ncClase ) { ?>
							<th>Clase</th>
						<? } ?>
						<th colspan="2" >Nombre <?=  $oPaginado->makeOrderBy('CAt.cFisico'); ?></th>
						<th>Tipo <?=  $oPaginado->makeOrderBy('CAt.cdClaseAtributo'); ?></th>
						<th>Rel</th>
						<th>Acciones</th>
					</tr>
				</thead>
				<!-- Cuerpo de la Tabla -->
				<tbody>
					<? /// Ciclo por cada registro
						while ( $this->oModule->oDatabase->moveNext() )
						{
							$cTipo = $this->oModule->oDatabase->aFields["cdClaseAtributo"];
							if ( $this->oModule->oDatabase->aFields["fLongitud"] )
							{
								$cTipo .= "(" . $this->oModule->oDatabase->aFields["fLongitud"] . ")";
							}
							// Busca las Relaciones del Atributo
							$cSql = "SELECT Rel.ncRelacion
									FROM stRelacion as Rel
									JOIN stRelacionAtributo as RAt
											ON RAt.ncRelacion = Rel.ncRelacion
									WHERE ncClaseHijo = " . $this->oModule->oDatabase->aFields['ncClase'] . "
											AND ncAtributoHijo = " .  $this->oModule->oDatabase->aFields['ncAtributo'];
							$aRelaciones = $this->oModule->oDatabase->getArray($cSql);
							// Arma el una cadena con la referencia al registro para pasarlo por get en las acciones por registro
							$cParametroRegistro =  "ncClase=" . $this->oModule->oDatabase->aFields["ncClase"] . "&amp;ncAtributo=" . $this->oModule->oDatabase->aFields["ncAtributo"];
					?>
						<tr <?= interlineado( $nLinea, 'par', 'impar' ); ?> >
							<? if ( !$ncClase ) { ?>
								<td><?= $this->oModule->oDatabase->aFields["cFisicoC"]; ?></td>
							<? } ?>
							<td width="1">
									<?= ( $this->oModule->oDatabase->aFields["cIcono"] ) ? "<img src=\"". URL_IMAGES . "/" . $this->oModule->oDatabase->aFields["cIcono"] . "\"/>" : ""; ?>
							</td>
							<td><?= $this->oModule->makeAction( $this->oModule->oDatabase->aFields["cFisico"], VER_ATRIBUTO, $cParametroRegistro, 3 ); ?></td>
							<td><?= $cTipo; ?></td>
							<td>
								<?
									foreach( $aRelaciones as $ncRelacion )
									{
										echo $this->oModule->makeAction( '' ,VER_RELACION, "ncRelacion=$ncRelacion", 3 );
									}
								?>
							</td>
							<td>
								<? // Acciones Por Registro
									if ( count($aRelaciones) == 0 )
									{
										echo $this->oModule->makeAction( '' , ELIMINAR_ATRIBUTO_DE_UNA_CLASE, $cParametroRegistro );
									}
									echo $this->oModule->makeAction( '' , MODIFICAR_ATRIBUTO_DE_UNA_CLASE, $cParametroRegistro );
								?>
							</td>
						</tr>
					<?
						} // Fin del While por cada Registro de la Consulta
					?>
				</tbody>
			</table>
		<?
			} // Fin si hubo un error en la Consulta
		?>
		<div class="acciones">
			<span>
					<? // Acciones
						echo $this->oModule->makeAction( '' , AGREGAR_ATRIBUTO_DE_UNA_CLASE, "ncClase=$ncClase" );
						echo $this->oModule->makeAction( '' , AGREGAR_RELACION, "ncCategoriaClase=1&ncClaseHijo=$ncClase" );
						echo $this->oModule->makeAction( '' , COPIAR_ATRIBUTOS_DE_OTRA_TABLA, "ncCategoriaClase=1&ncClaseBase=$ncClase" );
					?>
			</span>
			<span>
				<?=  $oPaginado->makeButtons(); ?>
			</span >
			<span>
				<?=  $oPaginado->makeReferences(); ?>
			</span>
		</div>
<? 	}
	}
?>
